快手内容冷启动推荐模型实践
文章主要包括四个部分:
1. 快手的内容冷启动解决什么问题
2. 冷启动建模的挑战与解决方案
3. 未来展望
4. 问答环节快手的内容冷启动解决什么问题
首先来看一下快手冷启动要解决的问题。
02
冷启动建模的挑战与解决方案
1. 样本空间远小于真实求解空间的问题
如果转化一下思路,从 item 的视角去寻找合适的人群,也就是切换到 I2U 的视角,理论上每一个视频都有获取流量的空间。
其中的重点是要训练一个 I2U 的检索服务,我们的初版是一个双塔模型。在实践的过程中,为了避免挂载用户过于集中的问题,我们首先会弃用 uid 而使用 action list和 self-attention 的方式有效地缓解用户聚集问题;同时,为了避免在学习过程 item-id 带来的学习曝光偏差,我们会弃用 item-id 而引入更多的语义向量、类目、tag 和 AuthorID 等这样的泛化特征来有效的缓解 item-id 的聚集。从 user 视角来看,引入了这种 Debias 的 loss,然后引入 batch 内的负采样,更好地避免用户集中的问题。
双塔的 I2U 模型是我们的首版实践,在实践过程中也有发现了一些问题。首先是双塔模型存在 user 和 item 交互的局限性,整体的检索精度受到了限制。另外,还有兴趣集中的问题,挂载在用户身上的内容经常会兴趣非常集中,但事实上用户的兴趣是多峰分布。我们还发现挂载的用户过于集中的问题,大部分的冷启视频会挂载在一些头部用户身上,这也是不够合理的,因为毕竟头部的用户每天能消费的内容也是有限的。
为了解决上面三个问题,新的解决方案是 TDM 建模和 TDM 分层检索方式。TDM 的一个好处是可以引入更加复杂的 user-item 交互模式,突破双塔的交互限制。第二个是使用类似于 DIN 的模式,可以减少对单峰兴趣的依赖。最后是 TDM 中引入分层检索可以非常有效地缓解挂载用户集中的问题。
此外我们还有一个比较有效的优化点是给父亲节点增加子孙节点的聚合表示,增强父亲节点的特征泛化和判别精度,就是会把儿子节点通过 Attention 的方式聚合到父亲节点,通过层层透传可以使得中间节点也具有一定的语义泛化能力。
总的来说,我们通过这些方案能够有效地解决内容冷启动的样本空间和真实求解空间不一致性的问题,使得冷启动的触达和覆盖得到很明显的提升。
接下来介绍内容冷启动样本稀疏性导致学习不准确和偏差大的问题,这是一个最大的挑战。这个问题的本质是交互行为的稀疏性,我们把问题展开为三个方向。
首先,泛化是目前解决冷启动问题一个非常普遍并且常用的手段。但是在我们实践过程中还是发现,相比于 tag、类目而言,引入一些语义 embedding 其实也是会比较有用的,但是这种直接把语义型特征直接加进来,整体带来的收益是非常有限的。既然视频语义空间和行为空间本身存在差异,我们能否通过视频语义的共性信息得到新视频在行为空间中的一个近似表征,通过这种泛化的信息来辅助。其实之前我们也提到有些做法,包括 CB2CF 这种思路,它会将泛化信息和真实行为空间做映射学习。我们其实并不是这么做的,实际实践的过程中我们会根据视频的语义向量找到和 target item 相似的 similar item list,首先它会和用户的长短期兴趣行为共享行为空间,同时我们会把 similar item list 做聚合,模拟得到候选视频在行为空间中的表征。其实这个做法跟我们刚才提到的图召回中引入与候选 item 相似连边的做法是一脉相承的,这个做法的效果是非常明显的,在离线 AUC 上有 0.35PP 的提升。
第二个是探索,就是新视频早期分发不准会导致后验 CTR 均值偏低,而这种均值偏低也会导致模型认为视频本身可能质量比较差,最终冷启动内容的探索性就受到了限制。那么能否建模 PCTR 的不确定性,减缓冷启阶段label的绝对利用和信任。我们尝试着将一次请求的 CTR 预估转变为一个 Beta 分布的预估,在线兼顾使用期望和方差。具体在实践过程中,我们会预估 Beta 分布的一个 α 和 β,具体在 loss 设计是预估的值和真实 label 的均方差的期望值。我们把期望值展开之后会发现需要得到预估值平方的期望和预估值的期望。而这两个值我们通过预估出来的 α 和 β 可以有效的计算出来, loss 也就生成了,然后我们就能够训练 Beta 分布,最后把 Beta 分布的预估值增加一个队列平衡探索与利用。其实我们在低 vv 阶段使用 Beta 的 loss 在 AUC 上有一定的提升,但并不是特别明显。但我们把贝塔分布在线使用能够在整体动作率持平的情况下,使得 0vv 的内容有效透出率增长22%。
接下来介绍的是对偶域迁移学习框架。整体的思想是,冷启动内容通常是高度倾斜的长尾分布,也是流行性偏见中的弱势群体。如果我们只使用冷启动样本,可以一定程度上缓解流行性的偏差,但是会丢失大量的用户兴趣,导致整体的精度下降。
我们目前已有的一些尝试,大多数是通过高热样本的一些欠采样,或者逆频率加权或者泛化特征的方式来侧重冷启样本的学习,但是往往忽略了冷启动早期行为样本与热门视频的在行为空间上的一个内在共性。
所以我们在设计过程中会把全量样本和冷启样本分为两个域,就是上图中的全量域和冷启域,全量域对所有的样本都生效,冷启域只针对冷启条件的样本才生效,然后增加双边的冷热知识域的迁移模块。具体的是会对 user 和 item 分别建模,从全域的样本塔到冷启样本塔的网络映射,从而在模型层面捕捉隐式的数据增强,提升冷启动视频的表示。在 item 侧我们会保留全量所有冷启样本,此外,也会对一些高热的视频根据曝光量进行采样,保证冷热域分布的相似性,最终能够确保整个映射的知识迁移的平滑。
此外我们还增加了一个独有的对偶流行度门控机制,引入一些流行性特征,用它去辅助冷热视频域的融合配比。一方面,新视频在不同的生命周期下冷启表达利用率的配比可以得到有效的学习和分配。另一方面,在用户侧也学习了不同活跃用户对冷启视频的敏感度。在实践过程中,离线效果无论在低 vv 阶段还是 4000vv 的 AUC 都有一定的提升。
最后介绍一个在纠偏方面的工作,也就是热度纠偏。推荐系统经常会面临着热度的偏差,整体上是高爆品的狂欢。现有的模型范式拟合的目标是全局的 CTR,推荐热门可能获得整体 loss 更低,但也会将一些热度的信息注入到 item embedding 中,引起高热视频被高估。
现有的一些方法一味追求做一些无偏估计,其实也会带来一些消费的损失。那么我们能否将一些 item embedding 在热度信息和真实的兴趣信息上解耦,有效利用热度信息和兴趣信息做在线融合,这可能是一个更加合理的方式。具体实践过程中我们参考了同行的一些做法。
重点主要是两个模块,一个是做了输入内容热度和兴趣的正交约束,比如输入的是 item id、author id 等特征,会生成两个表征,这两个表征一个是热度表征,一个是真实兴趣表征,求解过程中会做一个正则约束。第二个是我们会将一些 item 的纯热度信息也生成 embedding 作为视频的纯热度表征,纯热度表征会根据视频的真实热度表征去做一个相似性约束,这样就可以得到刚才说到的热度表征和兴趣表征,他们一个是表达热度信息,一个是在表达兴趣信息。最后会基于这两个表征在线添加一个有偏估计和无偏估计的队列做乘法公式融合。
03
未来展望
最后来分享一下对未来工作的展望。
首先是在人群扩散模型上更加精细化的建模与应用,特别是人群扩散的实时性,包括目前的 lookalike。我们其实也落地了一些 lookalike 的方案,比如在冷启阶段 U2U 的一个扩散应用,我们希望把它做得更精细化。
第二个是纠偏的方案,目前的因果模型在冷启动纠偏中也是有很多的研究,我们也会在这个方向做持续的研究和探索,特别是对于曝光的纠偏,还有热度的纠偏,第三个是在样本选择上,高热样本对于冷启的推荐还是有更大的价值的,能否在高热样本空间中挑选出一些更有价值的样本,给他们以不同的权重来提升冷启模型的推荐效率。
第三个是视频的长期成长价值的刻画,每个视频都需要经历冷启-成长-稳定-衰落的过程,如何在建模视频的时候更加关注它的长期收益,也就是成长空间,特别是在撬动价值方面,如何建模不同的单次分发对未来成长的价值差异,这也是一项非常有意思的工作。
最后一个是通过数据增强的方案,无论是样本还是对比学习的方案,我们都希望引入一些这方面的工作提升冷启推荐的效率。
04
问答环节
Q2:冷启动的另一面是如何防止头部内容过热,样本占比过高,导致越推越集中,有什么方法吗?
分享嘉宾
INTRODUCTION
丘志杰
快手
内容增长推荐算法专家
研究生毕业于中国科学院计算技术研究所,2016年毕业后先后在微软,腾讯,快手从事推荐算法研究与落地,目前在快手负责内容冷启动推荐算法的研究与优化。
往期优质文章推荐
往期推荐
点个在看你最好看